package com.adam.kafkamq.delay;

import org.apache.kafka.clients.consumer.KafkaConsumer;

import java.lang.reflect.Method;

/**
 * <p>
 * kafka延迟消费者相关组件封装，包含使用注解的方法、方法对应的Bean、注解详情、消费者、消费者提交等必要组件。
 * 该类的构造方法中会根据带有 @KafkaDelayListener 的方法的参数来动态生成，
 * 参数类型则只能使用 org.apache.kafka.clients.consumer.ConsumerRecord
 * </p>
 *
 * @author Adam
 * @date 2022/12/8 16:58
 * @desc kafka延迟消费者相关组件封装
 */
public class KafkaDelayConsumerContainer {

    /**
     * 消费逻辑方法所属bean
     */
    private Object bean;

    /**
     * 业务消费方法
     */
    private Method method;

    /**
     * 注解详情
     */
    private KafkaDelayListener kafkaDelayListener;

    /**
     * 消费者
     */
    private KafkaConsumer<String,String> consumer;

    private KafkaDltMessageHandler kafkaDltMessageHandler;

    public KafkaDelayConsumerContainer(Object bean, Method method, KafkaDelayListener kafkaDelayListener) {
        this.bean = bean;
        this.method = method;
        this.kafkaDelayListener = kafkaDelayListener;
    }

    public KafkaDelayListener getKafkaDelayListener() {
        return kafkaDelayListener;
    }

    public void setKafkaDelayListener(KafkaDelayListener kafkaDelayListener) {
        this.kafkaDelayListener = kafkaDelayListener;
    }

    public Object getBean() {
        return bean;
    }

    public Method getMethod() {
        return method;
    }

    public KafkaConsumer<String, String> getConsumer() {
        return consumer;
    }

    public void setConsumer(KafkaConsumer<String, String> consumer) {
        this.consumer = consumer;
    }

    public KafkaDltMessageHandler getKafkaDltMessageHandler() {
        return kafkaDltMessageHandler;
    }

    public void setKafkaDltMessageHandler(KafkaDltMessageHandler kafkaDltMessageHandler) {
        this.kafkaDltMessageHandler = kafkaDltMessageHandler;
    }
}
